/*
 * Actualizacion.java
 *
 * Creada el 27 de noviembre de 2007, 06:41 PM
 *
 */

package FachadaDatos;

import CapaLogica.*;
import com.sun.crypto.provider.RSACipher;
import java.util.*;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import FachadaInterfaz.*;

/**
 *
 * @author Solware
 */
public class Actualizacion {
    
    public static void actualizarEstado(int idSol, int edo)
        throws ServletException, IOException {
        
        /*el estado es un entero que se refiere a la situacion actual de la solicitud, donde:
         * edo_solicitud_noasignada= 0
         * edo_solicitud_asignada= 1
         * edo_solicitud_cerrada= 2
         * edo_solicitud_finalizada=3
         * edo_solicitud_aceptada=4
         * edo_solicitud_rechazada=5
         */ 
         
        Conexion.conectar();
                
        try {
            Statement stmt = Conexion.conexion.createStatement();
                        
            ResultSet rst = stmt.executeQuery("UPDATE solicitud SET estado = '"+edo+"' WHERE id = '"+idSol+"'");
            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
    
     public static void actualizarAsignacion(int idSol, int idUsuario, java.util.Date fecha_asignacion, String hora_asignacion )
        throws SQLException {
       
        Conexion.conectar();
                
        try {
            Statement stmt = Conexion.conexion.createStatement();
                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE solicitud_es_asignada_usuario_servidor SET usuario_servidor = '"+
                    idUsuario+"', fecha_asignacion= '"+fecha_asignacion+"', hora_asignacion= '"+hora_asignacion+
                    "' WHERE solicitud = '"+idSol+"'" );
            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
     
     public static void actualizarAsignacionSeccion(int idSol, int idDpto, int idSeccion, java.util.Date fecha_asignacion, String hora_asignacion )
        throws SQLException {
       
        Conexion.conectar();
                
        try {
            Statement stmt = Conexion.conexion.createStatement();                       
            
            ResultSet rst1 = stmt.executeQuery("SELECT solicitud FROM solicitud_asignada_seccion "+
                    "WHERE solicitud = '"+idSol+"'");
            if (rst1.next()) {
                ResultSet rst = 
                    stmt.executeQuery("UPDATE solicitud_asignada_seccion SET departamento = '"+
                    idDpto+"', seccion = '"+idSeccion+"', fecha_asignacion= '"+fecha_asignacion+
                    "', hora_asignacion= '"+hora_asignacion+"' WHERE solicitud = '"+idSol+"'" );
            } else {
                ResultSet rst = stmt.executeQuery("INSERT INTO solicitud_asignada_seccion VALUES "+
                        "('"+idSol+"', '"+idDpto+"', '"+idSeccion+"', ' ', '"+fecha_asignacion+"', '"+hora_asignacion+"')");
            }
            stmt.close();    
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
        try {
            Statement stmt = Conexion.conexion.createStatement();         
            System.out.println("borro");
            ResultSet rst2 = stmt.executeQuery("DELETE FROM solicitud_es_asignada_usuario_servidor "+
                    "WHERE solicitud = '"+idSol+"'");
            stmt.close();
        } catch (SQLException e) {}
    }
     
      public static void actualizarSolicitante(Solicitante st)
        throws SQLException {
       
        Conexion.conectar();
                
        try {
            Statement stmt = Conexion.conexion.createStatement();
                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE solicitante SET nombre = '"+
                    st.getNombre()+"', apellido = '"+st.getApellido()+"', telefono= '"+st.getTelefono()+
                    "', email = '"+st.getEmail() +"', tipo_solicitante = '1' WHERE id = '"+st.getId()+"'" );
            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
      
      public static void actualizarSolicitud (String id, String descripcion)
        throws SQLException {
       
        Conexion.conectar();
                
        try {
            Statement stmt = Conexion.conexion.createStatement();
                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE solicitud SET descripcion = '"+
                    descripcion+"' WHERE id = '"+id+"'" );
            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
        
    public static void actualizarServicio(Servicio s)
        throws SQLException {
       
        Conexion.conectar();                
        try {
            Statement stmt = Conexion.conexion.createStatement();                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE servicio SET nombre = '"+
                    s.getNombre()+"', descripcion = '"+s.getDescripcion()+
                    "', seccion = '"+s.getSeccion() +"' WHERE id = '"+s.getId()+"'" );            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }  
     //nuevo MS
    public static int actualizarUsuario(UsuarioServidor u)
        throws SQLException {
       
        Conexion.conectar();   
        String code = "02000";      
            try {
                Statement stmt = Conexion.conexion.createStatement();    
                String query = "UPDATE usuario_servidor SET nombre = '"+
                    u.getNombre()+"', apellido = '"+u.getApellido()+
                    "', telefono = '"+u.getTelefono()+"', email = '"+u.getEmail()+
                    "', profesion = '"+u.getProfesion()+"', perfil = '"+u.getPerfil()+
                    "', password = '"+u.getPassword()+"', nickname = '"+u.getNickname()+
                    "', seccion = '"+u.getSeccion()+"' WHERE id = '"+u.getId()+"'";
                System.out.println("Query: "+query);
                ResultSet rst = stmt.executeQuery(query);           
            } catch (SQLException e) {           
                code = e.getSQLState();                
                e.printStackTrace();
            }        
        
        return Integer.parseInt(code);        
    }
    
    public static void actualizarSeccion(Seccion s)
        throws SQLException {
       
        Conexion.conectar();                
        try {
            Statement stmt = Conexion.conexion.createStatement();                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE seccion SET nombre = '"+
                    s.getNombre()+"', descripcion = '"+s.getDescripcion()+
                    "', departamento = '"+s.getDepartamento() +"' WHERE id = '"+s.getId()+"'" );            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
    //nuevo MS 29/05/08
     public static int actualizarPerfil(Perfil p) {
        String code = "02000";
        Conexion.conectar();                
        try {
            Statement stmt = Conexion.conexion.createStatement();   
            String query = "UPDATE perfil SET nombre = '"+
                    p.getNombre()+"', solicitud = '"+p.getPermisoSolicitud()+
                    "', seccion = '"+p.getPermisoSeccion() +"' " +
                    ", servicio = '"+p.getPermisoServicio() +"' " +
                    ", recurso = '"+p.getPermisoRecurso() +"' " +
                    ", cola = '"+p.getPermisoCola() +"' " +
                    ", usuario = '"+p.getPermisoUsuario() +"' " +
                    ", perfil = '"+p.getPermisoPerfil() +"' " +
                    "WHERE id = '"+p.getId()+"'" ;
            System.out.println(query);
            ResultSet rst =                   
                    stmt.executeQuery(query);           
        } catch (SQLException e) {
            code = e.getSQLState();                
            e.printStackTrace();                         
        }
        return Integer.parseInt(code);
    }  
     
     
      public static void actualizarDatosEstado(Estado edo)
        throws SQLException {
       
        Conexion.conectar();                
        try {
            Statement stmt = Conexion.conexion.createStatement();                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE estado SET nombre = '"+
                    edo.getNombre()+"', descripcion = '"+edo.getDescripcion()+
                    "' WHERE id = '"+edo.getId()+"'" );            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
      
   
       public static void actualizarDatosDepartamento(Departamento dto)
        throws SQLException {
       
        Conexion.conectar();                
        try {
            Statement stmt = Conexion.conexion.createStatement();                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE departamento SET nombre = '"+
                    dto.getNombre()+"', descripcion = '"+dto.getDescripcion()+
                    "' WHERE id = '"+dto.getId()+"'" );            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
       
        public static void actualizarDatosPrioridad(Prioridad pri)
        throws SQLException {
       
        Conexion.conectar();                
        try {
            Statement stmt = Conexion.conexion.createStatement();                        
            ResultSet rst = 
                    stmt.executeQuery("UPDATE prioridad SET nombre = '"+
                    pri.getNombre()+"', descripcion = '"+pri.getDescripcion()+
                    "' WHERE id = '"+pri.getId()+"'" );            
        } catch (SQLException e) {
            /* Al ejecutar el query, siempre se lanza una excepcion.  *
             * Aqui se establece el codigo de estado de la BD despues *
             * de haber hecho la actualizacion.                           */
        }
    }
}
